home *** CD-ROM | disk | FTP | other *** search
/ Freelog 117 / FreelogNo117-OctobreNovembre2013.iso / Programmation / jedit / jedit5.1.0install.exe / {app} / macros / Emacs / Emacs_Kill_Line.bsh < prev    next >
Text File  |  2013-07-28  |  2KB  |  76 lines

  1. /**
  2.  * Emulate GNU Emacs's (kill-line) function (typically bound to Ctrl-K)
  3.  */
  4.  
  5. source (MiscUtilities.constructPath(dirname(scriptPath), "EmacsUtil.bsh"));
  6.  
  7. void emacsKillLine()
  8. {
  9.     boolean lastActionWasThis = repeatingSameMacro ("Emacs/Emacs_Kill_Line");
  10.  
  11.     caret = textArea.getCaretPosition();
  12.     caretLine = textArea.getCaretLine();
  13.     lineStart = textArea.getLineStartOffset (caretLine);
  14.     lineEnd = textArea.getLineEndOffset (caretLine);
  15.  
  16.     // If we're at the end of line (ignoring any trailing white space),
  17.     // then kill the newline, too.
  18.     
  19.     caret2 = caret + 1;
  20.     while (caret2 < lineEnd)
  21.     {
  22.         ch = charAt (caret2);
  23.         
  24.         if (! Character.isWhitespace (ch))
  25.             break;
  26.  
  27.         caret2++;
  28.     }
  29.  
  30.     String deletedText = null;
  31.     Selection selection = null;
  32.  
  33.     if (caret2 == lineEnd)
  34.     {
  35.         // We're at the end of the line. Join this line and the next line--but
  36.         // do it with a true delete, not with textArea.joinLines(), to
  37.         // emulate emacs better.
  38.  
  39.         if (caretLine != textArea.getLastPhysicalLine())
  40.             selection = new Selection.Range (caret, caret2);
  41.     }
  42.  
  43.     else
  44.     {
  45.         // Simple delete to end of line.
  46.  
  47.         selection = new Selection.Range (caret, lineEnd - 1);
  48.         //textArea.deleteToEndOfLine();
  49.     }
  50.  
  51.     if (selection != null)
  52.     {
  53.         textArea.setSelection (selection);
  54.         deletedText = textArea.getSelectedText();
  55.         textArea.replaceSelection ("");
  56.         textArea.removeFromSelection (selection);
  57.  
  58.         if (lastActionWasThis)
  59.         {
  60.             clipboard = getClipboard();
  61.             if (clipboard == null)
  62.                 clipboard = "";
  63.  
  64.             setClipboard (clipboard + deletedText);
  65.         }
  66.  
  67.         else
  68.         {
  69.             setClipboard (deletedText);
  70.         }
  71.     }
  72. }
  73.  
  74. emacsKillLine();
  75.  
  76.